תרגול 11 תור עץ חיפוש בינארי

Similar documents
עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

Practical Session No. 13 Amortized Analysis, Union/Find

מבני נתונים תרגיל 4 פתרון

תרגול נושאי התרגול כעץ חיפוש בינארי : העץ הימני. Inorder(x) 1) if x NULL 2) then Inorder(left(x)) 3) print key[x] 4) Inorder(right(x))

אוניברסיטת בן גוריון בנגב

חזרה, מיונים פולינה לוצקר

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

מבחן מועד ב' אנא קיראו היטב את ההראות שלהלן:

מבוא לתכנות ב- JAVA תרגול 7

הגדרה: משפחת עצים תקרא מאוזנת אם (n.h(t) = O(log

עצים ועצי חיפוש חומר קריאה לשיעור זה. Chapter 5.5 Trees (91 97) Chapter 13 Binary Search Trees ( )

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

יסודות מבני נתונים. תרגול :9 ערימה - Heap

םימתירוגלאו םינותנ ינבמ המירעו תינס, חמ רות רקצול הנילופ

חומר עזר בשימוש: הכל )ספרים ומחברות( קרא המלצות לפני הבחינה ובדיקות אחרונות לפני מסירה )עמודים 8-11( 2 שאלות )בחירה מ - 4( סה"כ 50 נקודות

פרק מיון וחיפוש - לשם מה? הגדרה

תאריך הבחינה: מבוא למדעי המחשב ד "ר פז כרמי פרופ' מייק קודיש ד "ר חן קיסר ד "ר צחי רוזן שם הקורס: מבוא למדעי המחשב מספר הקורס:

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

Depth-First Search DFS

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

בהצלחה! משך הבחינה: מבוא למדעי המחשב ד"ר פז כרמי פרופ' מייק קודיש ד"ר חן קיסר ד"ר צחי רוזן שם הקורס: מבוא למדעי המחשב מספר הקורס:

פרק היררכי

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

Name Page 1 of 5. ,דף ד: This week s bechina starts at the bottom of שיר של חול

מבוא לתרבות סייבר שיעור מס

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

סיכום מבני נתונים )שיעור( מרצה: אלכס סמורודניצקי. להערות: אמיר נווה

תכנון אלגוריתמים, אביב 2010, תרגול מס' 7 סריקה לעומק, מיון טופולוגי, רכיבים קשירים היטב. time time 1

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

1.1. הקדמה (דיסק). מדריכי. (מחיצות) Link

הקיטסיגול הרבחה יעדמל בלושמה גוחה

תרגול מס' 01 אלגוריתם דיניץ

תרגול 8. Hash Tables

Expressions (ex 8) Wild World (ex 7) Cars (ex 9)

בהצלחה! מבוא לתכנות מערכות

SEEDS OF GREATNESS MINING THROUGH THE STORY OF MOSHE S CHILDHOOD

יומא דף נב ?רבי יוסי (B

אוניברסיטת בן גוריון בנגב

מבוא למחשב בשפת פייתון

***Place an X if Closed גמרא (if no indication, we ll assume Open חזרה (גמרא of the :דף times

ASP.Net MVC + Entity Framework Code First.

interface Student {tag: Student, name: string; age: number;} const makestudent = ( name: string, age: number ) : Student =>

מדעי המחשב ב' פתרון בחינת הבגרות. שאלה 1 i - false

Adam: Meet Haman. A Sermon Delivered by Rabbi Haskel Lookstein on Shabbat Bereishit October 25, 2008

תרגול 01: ממשקים והורשה

מדדי מרכז הגדרה: מדדים סטטיסטיים המשקפים את הנטייה המרכזית של ההתפלגות מדדי מרכז מרכז ההתפלגות

A Long Line for a Shorter Wait at the Supermarket

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

תוכנה 1 תרגיל מספר 11

בוחן בתכנות בשפת C בצלחה

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

שאלה ) 1 מבחינה של פרופ' נוגה אלון ( G V עם משקלים על הקשתות, ונתון עץ פורש מינימלי של G. נניח

הכלה המשך בדף עבודה הקודם, הדגשנו את ההכלה של אובייקט אחד מוכל בתוך אובייקט אחר.

בעיית שיבוץ משימות.J כל משימה j J מאופיינת על הקלט: קבוצת משימות.t(j) s(j) וזמן סיום ידי זמן התחלה J J של משימות לא חופפות בזמן, הפלט: תת-קבוצה שהיא מ

DNS פרק 4 ג' ברק גונן מבוסס על ספר הלימוד "רשתות מחשבים" עומר רוזנבוים 1

כיורי גרניט כיורי מטבח עשויים גרניט להתקנה שטוחה, עמידות מלאה בפני שריטות וכתמים, עמידות בחום עד C ניקוי קל ומהיר צבע שאינו דוהה

ãówh,é ËÓÉÔê ÌW W É Å t" Y w f É ËÓÉÑ É èw É f Ñ u ð NNM YóQ' ÌW W É Y ÉgO d óqk É w f ym Éd É u ð NNM ÌWNQMH uqo ð NNM ÌWNQMH

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

שיעור מספר 6: מקושרים

פרק רשימה א. ייצוג הרשימה

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

מבוא למחשב בשפת Matlab

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

Ron Famini, Lior Bar,

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

מבנה ההרצאה חלק א' 1 (הסבר על הסימולטור.Torcs 2 (הסבר על תחרות EvoStar 2010 ביחד עם הדגמה של.GA חלק ב' הסבר על המאמר

בהצלחה! (MODULE C) Hoffman, Y. (2014). The Universal English-Hebrew, Hebrew-English Dictionary

אוניברסיטת בן גוריון בנגב

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

בהצלחה מועד א אנא קראו היטב את ההוראות שלהלן: תאריך המבחן: 9/7/2017 המרצים: ד"ר צחי רוזן מר דן בורנשטיין מר ניר גלעד

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

מ ש ר ד ה ח י נ ו ך ה פ ד ג ו ג י ת א ש כ ו ל מ ד ע י ם על ה ו ר א ת ה מ ת מ ט י ק ה מחוון למבחן מפמ"ר לכיתה ט', רמה מצומצמת , תשע"ב טור א'

סמסטר א' תשס "א התשובות. בהצלחה

sharing food intro price & extra drinks * ניתן להזמין מנות כשרות בתאום מראש for good memories

ביצה דף. ***Place an X if Closed גמרא (if no indication, we ll assume Open חזרה (גמרא of the :דף times

הוראות בעברית 40'

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

Information The marks for questions are shown in brackets. The maximum mark for this paper is 50. You must not use a dictionary.

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

אנגלית ספרות בהצלחה! /המשך מעבר לדף/ נספח: כישורי חשיבה )לפרק ראשון ושני( או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

הצעת תשובות לשאלות בחינת הבגרות אנגלית

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

4...Informed Search Strategies Partial Order Planning 29...Hierarchical Decomposition Reenforcement Learning 40...Unsupervised Learning

שבות תחום מצוות עשה שזמן גרמא סמיכה תקיעה, שברים, תרועה. The אי ור of performing any מלאכה on Rosh HaShanah שופר in preparation of the

הוראות לנבחן סף ובהם שמונה שאלות. עליך לענות על שש שאלות, על פי ההנחיות בכל פרק. גמר לבתי ספר לטכנאים ולהנדסאים

Summing up. Big Question: What next for me on my Israel Journey?

Apple, keys, pen, pencils, pencilbox,(toy)elephant,( toy) boy, (toy) girl, ball

מערכים Haim Michael. All Rights Reserved.

עצרת חישוב. int iterfactorial(int n) { int res=1; while(n>0) { res*=n; n--; return res;

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

פיזיקה של נהיגה מדריך למורה

The Benefits of Being Stiff-Necked. Rabbi Noah Gradofsky

The Art of Rebuke. Source #1: Story of Kamtzah and Bar Kamtzah Talmud Gittin 55b-56a

מקוון Sharing and Playing: Serious Games and Collaboration in Online Education

ראש השנה דף. 1. A) Our משנה says,... שנראה בעליל בין שלא נראה בעליל.בין Based on this,פסוק what does the word עליל mean?

Transcription:

2018 מבוא למדעי המחשב תרגול 11 תור עץ חיפוש בינארי

ראינו בהרצאות מבני נתונים נוספים עצים בינאריים עצי חיפוש בינאריים תור מחסנית

נראה בתרגול מבני נתונים חדשים תור ממשק + מימוש + שאלה עץ חיפוש בינארי תזכורת + 3 שאלות

תרגולים קודמים ממשקים: Iterable Iterator Comparable Comparator מחלקות המחלקה Object הורשה Generics עצים בינאריים BinaryNode BinaryTree סריקות

תור - Queue )FIFO( מבנה נתונים המשמר First In First Out מערכת הזמנות ניהול משימות במערכת הפעלה המתנה לשירות לקוחות טלפוני

public interface Queue<T> extends Iterable<T>{ /** * Checks if the queue is empty or not. * @return true if the queue is empty */ public boolean isempty(); /** * Removes an element from the head of the queue. * (FIFO order) * @return the next element in the queue. */ public T dequeue(); /** * Inserts an element into the queue. * @param elemment the element to be enqueued. */ public void enqueue(t element); /** * Returns the top element without removing it. * @return the next element in the queue. */ public T peek(); ממשק תור

ממשק רשימה )חלקי( public interface List<T> extends Iterable<T> { //Appends the specified element to the end of this list public boolean add(t element); //Inserts the specified element at the specified position in this list public void add(int index, T element); //Returns the element at the specified position in this list. public T get(int index); //Removes the first occurrence of the specified element from this list, if it is present public boolean remove(t element); //Removes the element at position i and returns it. public T remove(int index); //Returns true if this list contains no elements. public boolean isempty();

מימוש ע י רשימה מקושרת public class QueueAsLinkedList<T> implements Queue<T> { private List<T> list; public QueueAsLinkedList() { this.list {? = new LinkedList<>(); public boolean isempty() {{? return list.isempty(); public void enqueue(t element) {{? list.add(element); public T dequeue() {?{ if (isempty()) {throw new NoSuchElementException(); T element = list.get(0); list.remove(element); return element; // return list.remove(0); public T peek() {? { if (isempty()) {throw new NoSuchElementException(); return list.get(0); public Iterator<T> iterator() { {? return list.iterator();

טורניר סימולציה של טורניר

טורניר בהנתן המחלקה Player המדמה שחקן ופונקציה סטאטית p2) Player getwinner(player p1, Player המסמלצת משחק בין שני שחקנים ומחזירה את המנצח )אין אפשרות ל"תיקו" או להחזרת.)NULL יש לממש את הפונקציה הבאה: public static Player simulatetournament(list<player> playerslist) אשר מקבלת רשימה של שחקנים)לא )NULL טורניר טניס: בשלב הראשון השחקנים מתחלקים לזוגות מכל זוג עולה המנצח לשלב הבא השחקנים המנצחים מתחלקים לזוגות ומתחרים מסיימים כשנותר מנצח בודד ומבצעת סימולציה של

דוגמה של תור - טורניר 4 שחקן 2 שחקן 3 שחקן 4 שלב 1: שחקן 1 שחקן 4 שחקן 3 שחקן 2 שחקן 1

דוגמה של תור - טורניר שחקן 2 שלב 2: 4 שחקן 2 שחקן 3 שחקן 4 שלב 1: שחקן 1 שחקן 4 שחקן 3 שחקן 2

דוגמה של תור - טורניר שחקן 4 שחקן 2 שלב 2: 4 שחקן 2 שחקן 3 שחקן 4 שלב 1: שחקן 1 שחקן 4 שחקן 2

דוגמה של תור - טורניר שחקן 2 שלב 3 )המנצח(: שחקן 4 שחקן 2 שלב 2: 4 שחקן 2 שחקן 3 שחקן 4 שלב 1: שחקן 1 שחקן 2

דוגמה של תור - טורניר public static Player simulatetournament(list<player> playerslist) { // Add all players to a queue Queue<Player> q = new QueueAsLinkedList<>(); Iterator<Player> it = playerslist.iterator(); Player winner = null; while (it.hasnext()) { q.enqueue(it.next()); // Start the tournament! while (!q.isempty()) { Player first = q.dequeue(); if (q.isempty()) { winner = first; // Last player wins else { Player second = q.dequeue(); Player matchwinner = getwinner(first, second); // compete q.enqueue(matchwinner); // add winner to queue return winner;

עץ חיפוש בינארי 5 עץ בינארי 2 8 )next לכל קודקוד יש לכל היותר שני בנים )"רשימה" עם שני מבנה רקורסיבי 1 7 9 עץ חיפוש בינארי עץ בינארי כל קודקוד גדול מכל קודקודי תת העץ השמאלי וקטן מכל קודקודי תת העץ הימני

עץ בינארי תזכורת

עץ חיפוש בינארי מציאת איבר מינימלי איך נמצא איבר מינימלי בעץ בינארי )לא חיפוש(? נעבור על כל העץ 5 איך נמצא איבר מינימלי בעץ חיפוש בינארי? נתקדם תמיד לבן השמאלי 2 8 1 7 9

עץ חיפוש בינארי מציאת איבר מינימלי public class BinarySearchTree<T> extends BinaryTree<T> { private Comparator<T> treecomparator;... public BinarySearchTree(Comparator<T> mycomparator) { super(); this.treecomparator = mycomparator; public T findmin() { if (isempty()) return null; else return root.findmin();...

עץ חיפוש בינארי מציאת איבר מינימלי public class BinarySearchNode<T> extends BinaryNode<T> { private Comparator<T> treecomparator;... public BinarySearchNode(T data, Comparator<T> mycomparator) { super(data); this.treecomparator = mycomparator; public T findmin() { BinaryNode<T> currnode = this; while (currnode.left!= null) { currnode = currnode.left; return currnode.data;...

איטרטור עם זיכרון קבוע נתון עץ חיפוש בינארי בו כל קודקוד מכיל הפנייה לקודקוד האב שלו public class BinaryWithParentNode<T> { protected T data; protected BinaryNode<T> left; protected BinaryNode<T> right; protected BinaryNode<T> parent;... כתבו איטרטור in-order עבור העץ המשתמש בזכרון שאינו תלוי בעץ. הדרכה עבור כל תת עץ, מי הקודקוד הראשון לפי סדר הסריקה? מציאת "מינימום" בן שמאלי ביותר אם לקודקוד הנוכחי יש בן ימני, מי הקודקוד הבא בסריקה? המינימום בתת העץ הימני אם לקודקוד הנוכחי אין בן ימני, מי הקודקוד הבא בסריקה? הקודקוד הראשון במסלול מהקודקוד הנוכחי לשורש עבורו הקודקוד הנוכחי נמצא בתת העץ השמאלי שלו

איטרטור עם זיכרון קבוע public T findleftmost() { BinaryWithParentNode<T> currnode = this; while (currnode.left!= null) { currnode = currnode.left; return currnode.data; מציאת "מינימום"

איטרטור עם זיכרון קבוע! מציאת אב קדמון השמאלי )הקרוב ביותר( "אני" עבורו נמצא בתת העץ המושרש בבנו public BinaryWithParentNode<T> ancestor() { BinaryWithParentNode<T> ans = this; if (parent == null parent.left == this) ans = parent; else ans = parent.ancestor(); return ans;

מימוש איטרטור עם זיכרון קבוע! public class InOrderIterator<T> implement Iterator<T>{ private BinaryWithParentNode<T> next; public InOrderIterator<T>(BinaryWithParentNode<T> root){ if(root!= null) {next = root.findleftmost(); else {next = null; public boolean hasnext(){ return next!= null; public T next(){ if (!hasnext()) { throw new NoSuchElementException(); T ans = next.getdata(); if (next.right!= null) next = next.right.findleftmost(); else next = next.ancestor(); return ans;

post-order iterator עץ בינארי post-order יש לממש iterator למעבר על עץ בינארי )לאו דווקא חיפוש( פתרון אפשרי ניצור עץ איטרטורים - איטרטור אחד עבור כל צומת בעץ המקורי. כל איטרטור יחזיק את הבנים שלו, את הערך בקודקוד המתאים מהעץ והאם יש עוד ערך להחזיר. 5 5,T 2 8 2,F 8,T 1 7 9 1,F 7,F 9,T

post-order iterator עץ בינארי public class TreePostOrderIterator>T< implements Iterator>T<{ private boolean hasnext; private T rootdata; private Iterator>T< leftchilditerator, rightchilditerator; public TreePostOrderIterator(BinaryNode>T< root){ if (root== null){ hasnext = false; else{ hasnext = true; rootdata = root.getdata(); leftchilditerator = new TreePostOrderIterator>T<(root.getLeft()); rightchilditerator = new TreePostOrderIterator>T<(root.getRight());

post-order iterator עץ בינארי public boolean hasnext(){ return hasnext; public T next() { if (!hasnext()) { throw new NoSuchElementException(); if (leftchilditerator.hasnext()) return leftchilditerator.next(); else if (rightchilditerator.hasnext()) return rightchilditerator.next(); else{ hasnext = false; return rootdata; // Will never reach this part, but needed for compilation return null;

סיכום ומשימות בינארים תרגלנו: תור עצי חיפוש משימות: מטלת בית 5 קוויז